613 research outputs found

    Memory usage verification using Hip/Sleek.

    Get PDF
    Embedded systems often come with constrained memory footprints. It is therefore essential to ensure that software running on such platforms fulfils memory usage specifications at compile-time, to prevent memory-related software failure after deployment. Previous proposals on memory usage verification are not satisfactory as they usually can only handle restricted subsets of programs, especially when shared mutable data structures are involved. In this paper, we propose a simple but novel solution. We instrument programs with explicit memory operations so that memory usage verification can be done along with the verification of other properties, using an automated verification system Hip/Sleek developed recently by Chin et al.[10,19]. The instrumentation can be done automatically and is proven sound with respect to an underlying semantics. One immediate benefit is that we do not need to develop from scratch a specific system for memory usage verification. Another benefit is that we can verify more programs, especially those involving shared mutable data structures, which previous systems failed to handle, as evidenced by our experimental results

    Deciding Entailments in Inductive Separation Logic with Tree Automata

    Full text link
    Separation Logic (SL) with inductive definitions is a natural formalism for specifying complex recursive data structures, used in compositional verification of programs manipulating such structures. The key ingredient of any automated verification procedure based on SL is the decidability of the entailment problem. In this work, we reduce the entailment problem for a non-trivial subset of SL describing trees (and beyond) to the language inclusion of tree automata (TA). Our reduction provides tight complexity bounds for the problem and shows that entailment in our fragment is EXPTIME-complete. For practical purposes, we leverage from recent advances in automata theory, such as inclusion checking for non-deterministic TA avoiding explicit determinization. We implemented our method and present promising preliminary experimental results

    Verifying Heap-Manipulating Programs with Unknown Procedure Calls

    Get PDF
    10.1007/978-3-642-16901-4_13Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)6447 LNCS171-18

    The Tree Width of Separation Logic with Recursive Definitions

    Full text link
    Separation Logic is a widely used formalism for describing dynamically allocated linked data structures, such as lists, trees, etc. The decidability status of various fragments of the logic constitutes a long standing open problem. Current results report on techniques to decide satisfiability and validity of entailments for Separation Logic(s) over lists (possibly with data). In this paper we establish a more general decidability result. We prove that any Separation Logic formula using rather general recursively defined predicates is decidable for satisfiability, and moreover, entailments between such formulae are decidable for validity. These predicates are general enough to define (doubly-) linked lists, trees, and structures more general than trees, such as trees whose leaves are chained in a list. The decidability proofs are by reduction to decidability of Monadic Second Order Logic on graphs with bounded tree width.Comment: 30 pages, 2 figure

    The work input to saturated porous media undergoing internal erosion

    Get PDF
    The mechanism of internal erosion in porous media involves the microstructural evolutions induced by washing out of fine particles under different loading and seepage flow actions. Consequently, the effective stress on the solid skeleton is governed by the transition in velocity and stress of fine particles due to their detachment from the skeleton and then transport through pore channels, in addition to pore pressure. This study is to develop a formulation of work input to account for the interactions and mass exchanges between solid and fluid phases. Coupled mechanical-hydraulic erosion processes can be properly reflected through mass, momentum and energy balances based on Biot’s mixture theory of a three-phase model. This leads to three separate stress-like variables, effective stress, erosion force and hydraulic gradient, in conjugation with three strain-like variables, strain, mass loss and seepage velocity, respectively. The effective stress tensor, different from the classical form by Terzaghi due to the effect of erosion, and coupled hydro-mechanical-erosion criteria are naturally derived from the proposed work input. They consider grain scale mechanisms describing the transition of erodible particles from the solid skeleton to the fluidized state. Systematic formulations and discussions are presented to highlight the promising features of our approach.Dat G. Phan, Giang D. Nguyen, Ha H. B

    Crowfoot: a verifier for higher-order store programs

    Get PDF
    We present Crowfoot, an automatic verification tool for imperative programs that manipulate procedures dynamically at runtime; these programs use a heap that can store not only data but also code (commands or procedures). Such heaps are often called higher-order store, and allow for instance the creation of new recursions on the fly. One can use higher-order store to model phenomena such as runtime loading and unloading of code, runtime update of code and runtime code generation. Crowfoot's assertion language, based on separation logic, features nested Hoare triples which describe the behaviour of procedures stored on the heap. The tool addresses complex issues like deep frame rules and recursion through the store, and is the first verification tool based on recent developments in the mathematical foundations of Hoare logics with nested triples

    2,6-Dipicolinoylbis(N,N-dialkylthioureas) as versatile building blocks for oligo- and polynuclear architectures

    Get PDF
    Similar reactions of 2,6-dipicolinoylbis(N,N-diethylthiourea) (H2La) with: (i) Ni(NO3)2·6H2O, (ii) a mixture of Ni(NO3)2·6H2O and AgNO3, (iii) a mixture of Ni(OAc)2·4H2O and PrCl3·7H2O and (iv) a mixture of Ni(OAc)2·4H2O and BaCl2·2H2O give the binuclear complex [Ni2(La)2(MeOH)(H2O)], the polymeric compound [NiAg2(La)2]∞, and the heterobimetallic complexes [Ni2Pr(La)2(OAc)3] and [Ni2Ba(La)3], respectively. The obtained assemblies can be used for the build up of supramolecular polymers by means of weak and medium intermolecular interactions. Two prototype examples of such compounds, which are derived from the trinuclear complexes of the types [MII2LnIII(L)2(OAc)3] and [MII2Ba(L)3], are described with the compounds {[CuII2DyIII(La)2(p-O2C-C6H4-CO2)(MeOH)4]Cl}∞ and [MnII2Ba(MeOH)(Lb)3]∞, H2Lb = 2,6-dipicolinoylbis(N,N-morpholinoylthiourea)

    Structured specifications for better verification of heap-manipulating programs

    Get PDF
    Abstract. Conventional specifications typically have a flat structure that is based primarily on the underlying logic. Such specifications lack structures that could have provided better guidance to the verification process. In this work, we propose to add three new structures to a specification framework for separation logic to achieve a more precise and better guided verification for pointer-based programs. The newly introduced structures empower users with more control over the verification process in the following ways: (i) case analysis can be invoked to take advantage of disjointness conditions in the logic. (ii) early, as opposed to late, instantiation can minimise on the use of existential quantification. (iii) formulae that are staged provide better reuse of the verification process. Initial experiments have shown that structured specifications can lead to more precise verification without incurring any performance overhead.
    corecore